package com.theorydance.springsourcestudy;

import com.theorydance.springsourcestudy.autowired.conf.MyConf;
import com.theorydance.springsourcestudy.autowired.conf.TmpPlus2;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class AnnotationApplication {
    public static void main(String[] args) {
		/*
		通过new方式创建reader和scanner属性，这两个属性中都会将该上下文作为registry作为自己的一个属性进行使用
		reader为AnnotatedBeanDefinitionReader对象
		scanner为ClassPathBeanDefinitionScanner对象
		在创建reader的过程中，会往上下文中添加ConfigurationClassPostProcess对象到注册表中，这个是BeanFactoryPostProcess，
		在相应阶段会被调用执行postProcess从而会根据注解加载大量的beanDefinition对象，然后进行实例化
		 */
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
        // 将MyConf.class注册到 context.reader属性中， 实质上，就是将这个类注册到该上下文中
        context.register(MyConf.class);
        context.refresh();
        System.out.println(context.getBean(TmpPlus2.class));
    }
}
